﻿
using Core.Data;
using Core.Domain.Stores;
using System;
using System.Collections.Generic;
using System.Linq;

namespace Services.Stores
{
    /// <summary>
    /// 站点服务实现类
    /// </summary>
    public partial class StoreService : IStoreService
    {

        #region Fields

        private readonly IRepository<Store> _storeRepository;

        #endregion

        #region Ctor

        /// <summary>
        /// Ctor
        /// </summary>
        public StoreService(IRepository<Store> storeRepository)
        {
            this._storeRepository = storeRepository;
        }

        #endregion

        #region Methods

        public virtual void DeleteStore(Store store)
        {
            if (store == null)
                throw new ArgumentNullException("store");

            var allStores = GetAllStores();
            if (allStores.Count == 1)
                throw new Exception("不能删除最后的站点");

            _storeRepository.Delete(store);


        }

        public virtual IList<Store> GetAllStores()
        {
            var q = from s in _storeRepository.Table select s;

            var query = from s in _storeRepository.Table
                        orderby s.DisplayOrder, s.Id
                        select s;
            var stores = query.ToList();
            return stores;
        }

        public virtual Store GetStoreById(int storeId)
        {
            if (storeId == 0)
                return null;

            return _storeRepository.GetById(storeId);
        }

        public virtual void InsertStore(Store store)
        {
            if (store == null)
                throw new ArgumentNullException("store");

            _storeRepository.Insert(store);

        }

        public virtual void UpdateStore(Store store)
        {
            if (store == null)
                throw new ArgumentNullException("store");

            _storeRepository.Update(store);
        }


        #endregion
    }
}
